package algorithm;

import java.util.ArrayList;
import java.util.List;

public class leetcode_0049 {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> listall=new ArrayList<>();

        int len=strs.length;
        int[][] list=new int[len][27];
        int flag=-1;
        int count=0;
        for(int i=0;i<len;++i){
            if(strs[i]==""&&flag==-1) {
                List<String> tem=new ArrayList<>();
                tem.add("");
                listall.add(tem);
                int[] num=new int[27];
                list[count]=num;
                flag=count;
                count++;
            }
            else if(strs[i]==""){
                listall.get(flag).add("");
            }
            else{
                int lentem=strs[i].length();
                int k=0;
                for(;k<count;++k){
                    if(list[k][26]!=strs[i].length()) continue;
                    int[] tem=list[k].clone();
                    boolean flagtem=true;
                    for(int l=0;l<lentem;++l){
                        tem[strs[i].charAt(l)-'a']-=1;
                    }
                    for(int l=0;l<26;++l){
                        if(tem[l]!=0) flagtem=false;
                    }
                    if(flagtem==true){
                        listall.get(k).add(strs[i]);
                        break;
                    }
                }
                if(k==count){
                    int[] tem=new int[27];
                    for(int k2=0;k2<lentem;++k2){
                        tem[strs[i].charAt(k2)-'a']+=1;
                    }
                    tem[26]=lentem;
                    list[count]=tem;
                    count++;
                    List<String> tem_2=new ArrayList<>();
                    tem_2.add(strs[i]);
                    listall.add(tem_2);
                }
            }
        }
        return listall;
    }
}
